package com.ruoyi.web.controller.starbucks;

import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.starbucks.domain.QueryStarbucksAccount;
import com.ruoyi.starbucks.domain.StarbucksAccount;
import com.ruoyi.starbucks.service.IStarbucksAccountService;
import com.ruoyi.starbucks.service.SrmService;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import org.aspectj.weaver.loadtime.Aj;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import javax.validation.constraints.NotNull;
import java.math.BigInteger;
import java.util.Date;
import java.util.List;

/**
 * 星巴克账号Controller
 * 
 * @author ruoyi
 * @date 2021-01-03
 */
@ApiOperation("星巴克账号Controller")
@RestController
@RequestMapping("/starbucks/account")
public class StarbucksAccountController extends BaseController
{
    @Autowired
    private IStarbucksAccountService starbucksAccountService;

    /**
     * 查询星巴克账号列表
     */
    @ApiOperation("查询星巴克账号列表")
    @PreAuthorize("@ss.hasPermi('starbucks:account:list')")
    @GetMapping("/list")
    public TableDataInfo list(QueryStarbucksAccount starbucksAccount)
    {
        startPage();
        List<StarbucksAccount> list = starbucksAccountService.selectStarbucksAccountList(starbucksAccount);
        return getDataTable(list);
    }

    /**
     * 获取星巴克账号详细信息
     */
    @ApiOperation("获取星巴克账号详细信息")
    @PreAuthorize("@ss.hasPermi('starbucks:account:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") BigInteger id)
    {
        return AjaxResult.success(starbucksAccountService.selectStarbucksAccountById(id));
    }

    /**
     * 新增星巴克账号
     */
    @Log(title = "星巴克账号", businessType = BusinessType.INSERT)
    @PostMapping("/add")
    public AjaxResult add(String token,String isNewAccount, String deviceName, String phoneNo)
    {
        return starbucksAccountService.insertStarbucksAccount(token,isNewAccount,deviceName,phoneNo);
    }

    /**
     * 同步账号信息
     */
    @ApiOperation("同步账号信息")
    @GetMapping("/getAccountDetail")
    public AjaxResult getAccountDetail(String token){
        return starbucksAccountService.getAccountDetail(token);
    }

    /**
     * 同步星星
     */
    @ApiOperation("同步星星")
    @GetMapping("/getStar")
    public AjaxResult getStar(String token){
        return starbucksAccountService.getStar(token);
    }

    /**
     * 同步卡片
     */
    @ApiOperation("同步卡片")
    @PostMapping("/getCards")
    public AjaxResult getCards(String token){
        return starbucksAccountService.getCards(token);
    }

    /**
     * 同步优惠券信息
     */
    @ApiOperation("同步优惠券信息")
    @GetMapping("/getRewards")
    public AjaxResult getRewards(String token){
        return starbucksAccountService.getRewards(token);
    }

    /**
     * 插入token(每个token一行)
     */
    @ApiOperation("插入token(每个token一行)")
    @PostMapping("/insertByToken")
    public AjaxResult insertByToken(String token){
        return starbucksAccountService.insertByToken(token);
    }

    /**
     * 批量新增。本地文件（入口）
     */
    @ApiOperation("批量新增。本地文件（入口）")
    @Log(title = "星巴克账号", businessType = BusinessType.INSERT)
    @PostMapping("/addAll")
    public AjaxResult addAll(){
        return starbucksAccountService.insertStarbucksAccountAll();
    }

    /**
     * 更新此id的全部信息
     */
    @ApiOperation("更新此id的全部信息")
    @GetMapping("/updateInfoById")
    public AjaxResult updateInfoById(BigInteger id){
        return starbucksAccountService.updateInfoById(id);
    }

    /**
     * 批量更新信息
     */
    @ApiOperation("批量更新信息")
    @GetMapping("/updateInfo")
    public AjaxResult updateInfo(Date startTime , Date endTime){
        return starbucksAccountService.updateInfo(startTime,endTime);
    }
}
